The invention relates generally to data storage system on which data is prefetched for anticipated use by a requesting application.
Some high performance digital data storage systems which use an array of disk devices to store digital data also include high speed cache memory. The disk devices represent a more permanent storage area that provides protection against data loss due to unexpected power outages or other problems. However, since accessing the disk devices can typically be very slow in comparison to what is possible with semiconductor memory, the cache memory provides the actual staging area for reads and writes that are performed by the applications using the data storage system.
Thus, before a read or write of a particular block of data occurs, that block of data is first staged into cache memory. Then, the actual read or write operation is performed on it while it is in cache memory. After that block of data is no longer needed by the application, it is then destaged back to the disk storage devices. Since it is often the case that an application will also read or write to other blocks that are contiguous with or near the first block of data, one strategy is to move a larger portion of data from disk storage to cache memory in anticipation of future read and write operations. Thus, when the subsequent read or write operations occur, the data blocks will already be in cache memory and there will be no delay associate with having to retrieve them from the appropriate disk device. It is the ability to anticipate future read and write operations which provides one of the real advantages of using cache memory. And the strategy of moving larger portions of data into cache memory typically improves the performance of the data storage system considerably.
However, if the read and write operations that soon follow appear to be directed to a random sequence of data blocks, many of which are not within the portion of data that has been staged into cache memory, then the advantage of using the cache memory is considerably reduced. Indeed, if one attempts to access a random sequence of data blocks, the performance of the system significantly degrades.